home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / program / gemxx19.zoo / gem++19 / include / vdi.h < prev   
C/C++ Source or Header  |  1993-11-10  |  12KB  |  319 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  VDI
  4. //
  5. //  A VDI is an encapsulation of a VDI [Virtual] Workstation.
  6. //
  7. //  This file is Copyright 1992,1993 by Warwick W. Allison.
  8. //  This file is part of the gem++ library.
  9. //  You are free to copy and modify these sources, provided you acknowledge
  10. //  the origin by retaining this notice, and adhere to the conditions
  11. //  described in the file COPYING.LIB.
  12. //
  13. /////////////////////////////////////////////////////////////////////////////
  14.  
  15. #ifndef VDI_h
  16.  
  17. #define VDI_h
  18.  
  19. #include <bool.h>
  20. #include <stddef.h>
  21. #include <gemfast.h>
  22.  
  23.  
  24. class VDI
  25. {
  26. public:
  27.     // AES physical screen driver
  28.     VDI();                        // Standard screen VDI.
  29.  
  30.     // META.SYS driver
  31.     VDI(const char* metafile);    // Standard metafile (only if GDOS present).
  32.  
  33.     // Other devices (printers, etc).  Not supported yet.
  34.     //VDI(int device, int w, int h);
  35.  
  36.  
  37.     ~VDI();
  38.  
  39.     int  operator!() { return handle<0; }    // !v == creation failed
  40.  
  41.     // Global
  42.     void clrwk();
  43.     void updwk();
  44.  
  45.     // Constants
  46.     int MaxX() const                                { return WorkOut(0); }
  47.     int MaxY() const                                { return WorkOut(1); }
  48.     int Width() const                                { return WorkOut(0)+1; }
  49.     int Height() const                                { return WorkOut(1)+1; }
  50.     bool PreciseScaling() const                        { return WorkOut(2); }
  51.     int PixelWidth() /* microns */ const            { return WorkOut(3); }
  52.     int PixelHeight() /* microns */ const            { return WorkOut(4); }
  53.     int NumberOfCharacterHeights() const            { return WorkOut(5); }
  54.     int NumberOfLineTypes() const                    { return WorkOut(6); }
  55.     /* don't believe */ int NumberOfLineWidths() const    { return WorkOut(7); }
  56.     int NumberOfMarkerTypes() const                    { return WorkOut(8); }
  57.     int NumberOfMarkerSizes() const                    { return WorkOut(9); }
  58.     int NumberOfTextFaces() const;
  59.     int NumberOfPatterns() const                    { return WorkOut(11); }
  60.     int NumberOfHatchStyles() const                    { return WorkOut(12); }
  61.     int NumberOfPredefinedColours() const            { return WorkOut(13); }
  62.     int NumberOfAvailableColours() const            { return WorkOut(39); }
  63.     int NumberOfGDPs() const                        { return WorkOut(14); }
  64.     int GDP(int i /* 0..9 */) const                    { return WorkOut(15+i); }
  65.     int GDPAttribute(int i /* 0..9 */) const        { return WorkOut(25+i); }
  66.     bool Colour() const                                { return WorkOut(35); }
  67.     bool RotateTExtWorks() const                    { return WorkOut(36); }
  68.     bool FillAreaWorks() const                        { return WorkOut(37); }
  69.     bool CellArrayWorks() const                        { return WorkOut(38); }
  70.     int NumberOfLocators() const                    { return WorkOut(40); }
  71.     int NumberOfValidators() const                    { return WorkOut(41); }
  72.     int NumberOfChoosers() const                    { return WorkOut(42); }
  73.     int NumberOfStringDevices() const                { return WorkOut(43); }
  74.     int WorkstationType() const                        { return WorkOut(44); }
  75.     bool CanOutput() const                            { return (WorkOut(44)&1)==0; }
  76.     bool CanInput() const                            { return (WorkOut(44)&3)>0; }
  77.     bool IsMetafile() const                            { return WorkOut(44)==4; }
  78.  
  79.     int ScreenType() const                            { return ExtWorkOut(0); }
  80.     int NumberOfBackgroundColours() const            { return ExtWorkOut(1); }
  81.     bool TextEffectsSupported() const                { return ExtWorkOut(2); }
  82.     bool ScalableRasters() const                    { return ExtWorkOut(3); }
  83.     int NumberOfPlanes() const                        { return ExtWorkOut(4); }
  84.     bool PaletteBased() const                        { return ExtWorkOut(5); }
  85.     int Speed() const                                { return ExtWorkOut(6); }
  86.     bool ContourFillSupported() const                { return ExtWorkOut(7); }
  87.     int CharacterRotationType() const                { return ExtWorkOut(8); }
  88.     int NumberOfWritingModes() const                { return ExtWorkOut(9); }
  89.     int InputModesAvailable() const                    { return ExtWorkOut(10); }
  90.     bool TextAlignmentSupported() const                { return ExtWorkOut(11); }
  91.     bool InkingSupported() const                    { return ExtWorkOut(12); }
  92.     int RubberbandingSupported() const                { return ExtWorkOut(13); }
  93.     int MaximumVertices() const                        { return ExtWorkOut(14); }
  94.     int MaximumIntin() const                        { return ExtWorkOut(15); }
  95.     int NumberOfMouseButtons() const                { return ExtWorkOut(16); }
  96.     bool StyledWideLinesSupported() const            { return ExtWorkOut(17); }
  97.     bool WideLinesWriteModesSupported() const        { return ExtWorkOut(18); }
  98.  
  99.     int WorkOut(int index) const;
  100.     int ExtWorkOut(int index) const;
  101.  
  102.     int CharWidth() const;
  103.     int CharHeight() const;
  104.     int CharCellWidth() const;
  105.     int CharCellHeight() const;
  106.  
  107.     // Attributes
  108.     int  swr_mode (int mode);
  109.     void s_color (int index, int rgb[]);
  110.     int     sl_type (int style);
  111.     void sl_udsty (int pat);
  112.     int     sl_width (int width);
  113.     int     sl_color (int index);
  114.     void sl_ends (int begstyle, int endstyle);
  115.     int     sm_type (int symbol);
  116.     void sm_height (int height);
  117.     int     sm_color (int index);
  118.     int  st_height (int height, int *charw, int *charh, int *cellw, int *cellh);
  119.     int     st_point (int point, int *charw, int *charh, int *cellw, int *cellh);
  120.     int     st_rotation (int ang);
  121.     int     st_font (int font);
  122.     int     st_color (int index);
  123.     int     st_effects (int effects);
  124.     void st_alignment (int hin, int vin, int *hout, int *vout); 
  125.     int     sf_interior (int style);
  126.     int     sf_fill (int style);
  127.     int     sf_style (int style);
  128.     int     sf_color (int index);
  129.     int     sf_perimeter (int vis);
  130.     void sf_udpat (int pat[], int planes);
  131.  
  132.     // NOTE: In GEM++, fonts are unloaded automatically.
  133.     //       Also, st_load_fonts MAY be called without GDOS (int returns 0).
  134.     //
  135.     int     st_load_fonts (int select=0);
  136.     void st_unload_fonts (int select=0);
  137.  
  138.     void s_clip (int clip_flag, int pxyarray[]);
  139.  
  140.     // Outputs
  141.     void bar (int pxyarray[]);
  142.     void arc (int x, int y, int radius, int begang, int endang); 
  143.     void pieslice (int x, int y, int radius, int begang, int endang);
  144.     void circle (int x, int y, int radius);
  145.     void ellarc (int x, int y, int xrad, int yrad, int begang, int endang);
  146.     void ellpie (int x, int y, int xrad, int yrad, int begang, int endang);
  147.     void ellipse (int x, int y, int xrad, int yrad);
  148.     void rbox (int pxyarray[]);
  149.     void rfbox (int pxyarray[]);
  150.     void justified (int x, int y, char *str, int len, int word_space, int char_space);
  151.     void pline (int count, int pxyarray[]);
  152.     void pmarker (int count, int pxyarray[]);
  153.     int     gtext (int x, int y, char *str);
  154.     void fillarea (int count, int pxyarray[]);
  155.     void cellarray (int pxyarray[], int row_length, int elements, int nrows, int write_mode, int colarray[]);
  156.     void contourfill (int x, int y, int index);
  157.     void r_recfl (int pxyarray[]);
  158.  
  159.     void ro_cpyfm (int mode, int pxyarray[], const MFDB& src, const MFDB& dst);
  160.     void rt_cpyfm (int mode, int pxyarray[], const MFDB& src, const MFDB& dst, int color[]);  
  161.     void r_trnfm (const MFDB& src, const MFDB& dst);
  162.     void get_pixel (int x, int y, int *pel, int *indx); 
  163.  
  164.  
  165.     // Inputs
  166.     int     sin_mode  (int dev, int mode);
  167.     void rq_locator (int x, int y, int *xout, int *yout, int *term);  
  168.     int     sm_locator (int x, int y, int *xout, int *yout, int *term);
  169.  
  170.     void rq_valuator (int in, int *out, int *term);
  171.     void sm_valuator (int in, int *out, int *term, int *status);
  172.     void rq_choice (int cin, int *cout);
  173.     int     sm_choice (int *choice);
  174.     void rq_string (int len, int echo, int echoxy[], char *str);
  175.     int     sm_string (int len, int echo, int echoxy[], char *str);
  176.     void sc_form (int form[]);
  177.     void ex_timv (void *time_addr, void **otime_addr, int *time_conv); 
  178.     void show_c (int reset);
  179.     void hide_c ();
  180.     void q_mouse (int *pstatus, int *x, int *y);
  181.     void ex_butv (void *new_p, void **old);
  182.     void ex_motv (void *new_p, void **old);
  183.     void ex_curv (void *new_p, void **old);
  184.     void q_key_s (int *state);
  185.  
  186.     // Inquiries
  187.     void q_extnd (int flag, int work_out[]) const;
  188.     int     q_color (int index, int flag, int rgb[]) const;
  189.     void ql_attribute (int atrib[]) const;
  190.     void qm_attributes (int atrib[]) const;
  191.     void qf_attributes (int atrib[]) const;
  192.     void qt_attributes (int atrib[]) const;
  193.     void qt_extent (char *str, int extent[]) const;
  194.     int     qt_width (int chr, int *cw, int *ldelta, int *rdelta) const;
  195.     int     qt_name (int element, char *name) const;
  196.     void qt_fontinfo (int *minade, int *maxade, int distances[], int *maxwidth, int effects[]);  
  197.     void qt_font_info (int *minade, int *maxade, int distances[], int *maxwidth, int effects[]);  
  198.  
  199.  
  200.     void q_cellarray (int pxyarray[], int row_len, int nrows, int *el_used, int *rows_used, int *status, int color[]);  
  201.     void qin_mode (int dev, int *mode);
  202.  
  203.     // ASCII terminal
  204.     void q_chcells (int *n_rows, int *n_col